﻿#ifndef FILETRANSFER_H
#define FILETRANSFER_H

#include "TransferBase.h"
#include <QFile>

class FileTransfer : public TransferBase {
public:
    FileTransfer(TransferProxy* proxy);
    //因为不管什么文件，接收流程都一样，所以同意写
    //但是发送可能各不相同
    void            received(const QVariant &var);

protected:
    void            sendFile(QString filePath);
    //为什么用引用呢，因为可以让上面决定QFile的
    void            saveFile();
    //从信息里解析文件的大小名字
    bool            praseHead(QString info);
    //获取保存的路径
    virtual QString getSaveDir() = 0;
    /**
     * @brief 检查文件所在目录是否存在，不存在返回false
     * @param[in] path 检测的路径
     * @param[in] flag 不存在是否创建路径
     * @return 检查文件所在目录是否存在，不存在返回false 如果flag为true 则会创建返回true
     */
    static bool     CheckPathIsExist(QString path, bool flag = true);
    //保存完毕以后会回调该函数 由子类进行实现
    virtual void    saveOverFunc() = 0;

protected:
    //读取文件名字
    QString     mSaveFileName;
    //要读取总文件大小
    uint        mReciveFilesize = 0;
    //已经读取文件大小
    uint        mAlreadyReadFileSize = 0;
};

#endif // FILETRANSFER_H
